home *** CD-ROM | disk | FTP | other *** search
/ Risc World 3 / Risc World 3.iso / SOFTWARE / ISSUE2 / PD / VINCE / !ViNCe / s / mcode
Text File  |  2002-03-10  |  2KB  |  98 lines

  1. ; Use the GET directive to include register definitions as if typed here
  2.  
  3.         GET     h.RegNames
  4.  
  5.         AREA    |C$$Code|, CODE, READONLY
  6.  
  7.  
  8.         EXPORT  mc_fill_rectangle
  9.  
  10.  
  11.  
  12. mc_fill_rectangle  ROUT
  13. ;on entry       r0 -> output
  14. ;               r1 =  size x
  15. ;               r2 =  size y
  16. ;               r3 =  pixels per line
  17. ;             sp+0 =  pixel value
  18.           CMP       r1, #1
  19.           CMPEQ     r2, #1
  20.           BEQ       mc_fill_rectangle_1x1
  21.  
  22.           STMFD     r13!,{r0-r12,r14}
  23.           LDR       r4, [r13,#4*14]
  24.  
  25.           CMP       r1, #0
  26.           CMPLE     r2, #0
  27.           LDMLEFD   r13!,{r0-r12,pc}^
  28.  
  29.           MOV       r4,r4,LSL#16
  30.           MOV       r4,r4,LSR#16
  31.           ORR       r6,r4,r4,LSL#16
  32.           MOV       r7,r6
  33.           MOV       r8,r6
  34.           MOV       r9,r6
  35.           MOV       r5,r4,LSR#8
  36.  
  37.           MOV       r10,r1
  38. 10
  39.             MOV     r1,r10
  40.             BL      mc_fill_rectangle_line
  41.           SUB       r0,r0,r10,LSL#1
  42.           ADD       r0,r0,r3,LSL#1
  43.           SUBS      r2,r2,#1
  44.           BGT       %B10
  45.           LDMFD     r13!,{r0-r12,pc}^
  46.  
  47.  
  48. mc_fill_rectangle_line        ROUT
  49.           ;on entry r0->output
  50.           ;         r1=no. of pixels
  51.           ;         r4,r5,r6-r9 pixelvalue
  52.           TST       r0,#3
  53.           BEQ       %F00
  54.           STRB      r4,[r0],#1
  55.           STRB      r5,[r0],#1
  56.           SUBS      r1,r1,#1
  57.           MOVEQS    pc,r14
  58. 00
  59. 08
  60.             CMP     r1, #8
  61.             BLT     %F04
  62.             STMIA   r0!,{r6-r9}
  63.             SUBS    r1,r1,#8
  64.           BGE       %B08
  65.  
  66. 04
  67.             CMP     r1, #4
  68.             BLT     %F02
  69.             STMIA   r0!,{r6-r7}
  70.             SUBS    r1,r1,#4
  71.           BGE       %B04
  72.  
  73. 02
  74.             CMP     r1, #2
  75.             BLT     %F01
  76.             STR     r6,[r0],#4
  77.             SUBS    r1,r1,#2
  78.           BGE       %B02
  79.  
  80. 01
  81.           CMP       r1,#1
  82.           MOVLTS    pc,r14
  83.           STRB      r4,[r0],#1
  84.           STRB      r5,[r0],#1
  85.           MOVS      pc,r14
  86.  
  87.  
  88. mc_fill_rectangle_1x1
  89.           LDR       r4, [r13]
  90.           STRB      r4,[r0],#1
  91.           MOV       r4,r4,LSR#8
  92.           STRB      r4,[r0],#1
  93.           MOVS      pc,r14
  94.  
  95.  
  96.  
  97.         END
  98.